module pe {
/** * */export interface AsyncCallback<T> {
completed(result: T);
failed(error: Error);
progress?: AsyncProgress;
}
export interface AsyncProgress {
progress(value: number, total: number): boolean;
continueLater(next: () => void);
}
export class DefaultAsyncProgress implements AsyncProgress {
yieldAfter: number;
yieldInterval = 200;
constructor() {this.yieldAfter = this.now() + this.yieldInterval;
}
progress(value: number, total: number): boolean {
var now = this.now();
return now > this.yieldAfter;
}
continueLater(next: () => void) {
setTimeout(next, this.yieldInterval);
}
now(): number {
return Date.now();
}
}
}